אלגוריתמים בתורת הגרפים חלק רביעי

Σχετικά έγγραφα
. {e M: x e} מתקיים = 1 x X Y

חורף תש''ע פתרון בחינה סופית מועד א'

אלגוריתמים בתורת הגרפים חלק ראשון

תרגיל 13 משפטי רול ולגראנז הערות

ל הזכויות שמורות לדפנה וסטרייך

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

Logic and Set Theory for Comp. Sci.

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

logn) = nlog. log(2n

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

gcd 24,15 = 3 3 =

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

מתמטיקה בדידה תרגול מס' 13

אלגוריתמים בתורת הגרפים חלק שני

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

שאלה 1 V AB פתרון AB 30 R3 20 R

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

תורת הגרפים - סימונים

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

סיכום- בעיות מינימוםמקסימום - שאלון 806

{ : Halts on every input}

מבני נתונים ואלגוריתמים תרגול #8-9

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

מתמטיקה בדידה תרגול מס' 5

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

אינפי - 1 תרגול בינואר 2012

תרגול מס' 6 פתרון מערכת משוואות ליניארית

גבול ורציפות של פונקציה סקלרית שאלות נוספות

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

רשימת משפטים והגדרות

x a x n D f (iii) x n a ,Cauchy

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

אלגוריתמים / תרגיל #1

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

אלגברה ליניארית (1) - תרגיל 6

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

קיום ויחידות פתרונות למשוואות דיפרנציאליות

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

תרגול פעולות מומצאות 3

רשימת בעיות בסיבוכיות

הגדרה: מצבים k -בני-הפרדה

אלגברה מודרנית פתרון שיעורי בית 6

חשבון אינפיניטסימלי 1 סיכום הרצאות באוניברסיטה חיפה, חוג לסטטיסטיקה.

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

מודלים חישוביים תרגולמס 5

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

תשובות מלאות לבחינת הבגרות במתמטיקה מועד חורף תשע"א, מיום 31/1/2011 שאלון: מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן.

חשבון אינפיניטסימלי 1

אלגוריתמים 1, סמסטר אביב 2017

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

co ארזים 3 במרץ 2016

תרגול מס' 1 3 בנובמבר 2012

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

סרוקל רזע תרבוח 1 ילמיסיטיפניא ןובשח

גרפים אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 הגדרה: מגן דוגמאות: זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב.

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

מבני נתונים ואלגוריתמים תרגול #11

תורת הקבוצות תרגיל בית 2 פתרונות

תרגיל 7 פונקציות טריגונומטריות הערות

טענה חשובה : העתקה לינארית הינה חד חד ערכית האפס ב- הוא הוקטור היחיד שמועתק לוקטור אפס של. נקבל מחד חד הערכיות כי בהכרח.

מתמטיקה בדידה תרגול מס' 12

סדרות - תרגילים הכנה לבגרות 5 יח"ל

תורת המספרים 1 פירוק לגורמים ראשוניים סיכום הגדרות טענות ומשפטים אביב הגדרות 1.2 טענות

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.


ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

אלגברה ליניארית 1 א' פתרון 7

אלגברה לינארית (1) - פתרון תרגיל 11

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

מבני נתונים ויעילות אלגוריתמים

אלגברה ליניארית 1 א' פתרון 2

The No Arbitrage Theorem for Factor Models ג'רמי שיף - המחלקה למתמטיקה, אוניברסיטת בר-אילן

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

פתרונות , כך שאי השוויון המבוקש הוא ברור מאליו ולכן גם קודמו תקף ובכך מוכחת המונוטוניות העולה של הסדרה הנתונה.

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

אופטימיזציה דיסקרטית 67855

3-9 - a < x < a, a < x < a

תורישק :תורישקה תייעבב בוש ןייענ?t- t ל s- s מ לולסמ שי םאה 2

מתמטיקה בדידה תרגול מס' 2

מושגים: קשיר. o בעל 1 קשתות בדיוק.

Transcript:

גירסה 00 232003 אלגוריתמים בתורת הגרפים חלק רביעי מסמך זה הינו הרביעי בסדרת מסמכים אודות תורת הגרפים, והוא חופף בחלקו לקורס "אלגוריתמים בתורת הגרפים" בטכניון (שאינו מועבר יותר) ברצוני להודות תודה מיוחדת לפרופסור שמעון אבן ז"ל, על העזרה העצומה שעזר לי בהבנת החומר ובשאלות רבות עליהן ענה לי כאשר למדתי את הנושא שמעון אבן היה מרצה שהערכתי מאוד ותרומתו למסמך זה היתה משמעותית מקורות: המסמך מבוסס במידה רבה על הרצאותיו של פרופסור שמעון אבן משנת 2002 וכן על שאלות רבות עליהן שמעון אבן ענה לי ספרו של שמעון אבן מ- 979, Graph Algorithms פרקים מספרו החדש של שמעון אבן, שפורסמו בשנת 2002 חלקים מהרצאות וידאו של פרופסור ראובן בר יהודה בנושא אלגוריתמים בתורת הגרפים המסמכים כוללים נקודות רבות ממקורות אלו, ובנוסף תובנות רבות, דוגמאות ורעיונות שאספתי במהלך לימוד הקורס עמוד

ו- v) β ( הינה זרימה ברשתות סימון v, הינה קבוצת הקשתות הנכנסות אל )α (v עבור כל צומת : v V קבוצת הקשתות היוצאות מ- v t,, N( G( V, E), s, כוללת את הרכיבים הבאים: רשת, המסומנת (c גרף (E )G V, מכוון ללא חוגים עצמיים וללא קשתות מקבילות,s s מכונה מקור ו- t מכונה בור 2 שני צמתים t V אין כל קשר בין צמתים אלו למקור ולבור כפי שהוגדרו עבור גרפים מכוונים E - c : פונקצית קיבול, המתאימה מספר לכל צומת R + 3 0 E f : המקיימת את התנאים הבאים: 4 פונקצית זרימה R 0 f ( ) c( ) נדרוש כי, E תנאי הקשת: עבור כל קשת a f ( ) = f ( ) מתקיים כי,t או s שאיננו v לכל צומת b α ( v) β ( v) כלומר: הצומת אינו יכול לייצר זרימה ואינו יכול לספוג זרימה לעומת זאת: מקור יכול לייצר זרימה באופן בלתי מוגבל, ובור יכול לספוג זרימה באופן בלתי מוגבל ניתן לכתוב את נוסחה זו גם בצורה הבאה: = f f 0 ( ) ( ) α ( v) β ( v) F = f ( ) f ( ) α ( t) β ( t) נגדיר את הזרימה הכללית הנובעת מ- f בצורה הבאה: הזרימה הכללית הינה סכום הזרמים הנכנסים אל הבור הבעיה אותה אנו רוצים לפתור: בהינתן רשת, מצא f עבורו F מקסימום, להיות המשלים של נגדיר את V {} t להיות קבוצת הקשתות שצומת ההתחלה שלהן (, ) נגדיר את כלומר, להיות תת קבוצה של ( : ) = V נגדיר את היא ב- וצומת הסיום שלהם ב- קבוצת הקשתות המקשרות את ידי עם תוגדר בצורה דומה (בשני הכיוונים) נקראת החתך המוגדר על עמוד 2

למה F = f ( ) f ( ) ( : ) ( : ) עבור כל ועבור כל f מתקיים a b 0 = f ( ) f ( ) α ( v) β ( v), נקבל F = f ( ) f ( ) α ( t) β ( t) t s הוכחה ראינו כי עבור t: כמו כן, עבור כל צומת אחרת, מתקיים כי אם נרשום את כל המשוואות הנ"ל עבור כל הצמתים ב- משוואות נחבר כעת את כל המשוואות בצד השמאלי נקבל פשוט F, ובצט הימני נקבל סכומים שונים נביט במקרים שונים לגבי הסכומים הנ"ל f ( ) מקרה נמצאים ב-, y וגם x אם גם, x עבור צומת y לא מופיעה כלל בצד הימני של המשוואה a b מקרה 2 נמצאים ב- y וגם x אם גם, x עבור צומת y מופיעה פעמיים בצד הימני של המשוואה, פעם עם סימן חיובי ופעם עם סימן שלילי, ו- f מצטמצמת f ( ) a b מקרה 3, ב- נמצאת ו- y ב- נמצאת כך שx, x עבור צומת y ( f ( מופיעה פעם אחת בצד הימני של המשוואה עם סימן ) ( חיובי כמו כן, : a b מקרה 4, ב- נמצאת ו- y ב- נמצאת כך שx, x עבור צומת y ( f ( מופיעה פעם אחת בצד הימני של המשוואה עם סימן ) : ( שלילי כמו כן, F = f ( ) f ( ) ( : ) ( : ) לכן, אם נסכם את כל הצמתים, נקבל כי והלמה הוכחה עמוד 3

( ) C : c( ) ( : ) ) C( : בצורה הבאה: בהינתן חתך ) ( : נגדיר את ערך החתך ערך החתך הוא סכום הקיבולים של קשתות החתך למה 2 ( ) עבור כל ועבור כל f מתקיים F C : מסקנות החתך הוא חסם עליון על הזרימה הכללית כל זרימה היא חסם תחתון לערך החתכים משפט - thorm max flow min cut לכל רשת יש זרימת מקסימום ששווה לקיבול של החתך עבורו הקיבול מינימלי חשיבות ( ) נניח שנגיע למצב בו יתקיים כי, F = C : אזי נוכל לומר כי הזרימה שבידינו היא מקסימום, והחתך הוא מינימום (מכיוון ששניהם חסמים אחד של השני) הוכחת הלמה F = f ( ) f ( ) ( : ) ( : ) ידוע לפי הלמה הראשונה כי תנאי הקשת אומר לנו כי 0 ), f ( מכאן גם 0 ), f ( ולכן: ( ) F = f ( ) f ( ) f ( ) + 0 = C : ( : ) ( : ) ( : ) קשת רוויה היא קשת עבורה מתקיים כי ( f ( ( = )c עמוד 4

(956) FORD AND FULKERON ALGORITHM, הפונקציה f ( ) N G( V, E), s, t, מטרת האלגוריתם: בהינתן רשת c משנה את f על מנת להגדיל את הזרימה הכללית ופונקצית זרימה מסלול שיפור הוא מסלול פשוט מ- s אל t (לא בהכרח מכוון), אבל שניתן להשתמש בו כדי לקדם זרימה מ- s אל t במסלול זה, אם היא קשת המכוונת בכיוון מ- s אל t, אזי כדי ש- תוכל לדחוף זרימה, צריך להתקיים כי ( f ( ( < )c אם מכוונת בכיוון ההפוך, אז כדי לדחוף זרימה דרך הצומת, אנו צריכים להיות מסוגלים לבטל חלק מהזרימה, כלומר נדרוש כי > 0 ) f ( באלגוריתם זה, כמו באלגורתמים אחרים שהצגנו במסמכים קודמים, ישנו תהליך סימון בתחילת האלגוריתם כל הצמתים אינם מסומנים בתהליך הסימון - אם אנו מסמנים את צומת t, הרי שקיים מסלול שיפור אנו נשתמש במסלול זה כדי לשפר את הזרימה, ולאחר מכן נחזור על התהליך, עד שלא יימצא יותר תהליך שיפור קשת מועילה תוגדר בצורה הבאה: u תיקרא מועילה אם: קשת קדימה v u מסומן ו- v איננו מסומן f ( ) < c( ) 2 u תיקרא מועילה אם: קשת אחורה v u מסומן ו- v איננו מסומן f ( ) > 0 2, +, במקרה של קשת קדימה, נסמן את v בסימון ונגדיר את הקיבול השיורי להיות v = c( ) f ( ) במקרה של קשת אחורה, נסמן את בסימון ונגדיר את הקיבול השיורי להיות = f ( ) הקיבול השיורי אומר לנו כמה זרם נוסף ניתן להזרים דרך הצומת עמוד 5

האלגוריתם () Assign som lgal initial flow f to th dgs; an assignmnt f() = 0 to vry dg will do (2) Mark s "labld" and all othr vrtics unlabld (3) Whil thr is vrtx v which can b labld by ithr a forward or backward labling and also t is not labld: (4) Labl v with th propr sign - ithr + or (5) If t isn't labld, halt; th prsnt flow is maximum (6) tarting from t and by th us of th labls, backtrack th path through which 2 3 t th labling rachd t from s Lt this path b s= v v v v v = t 0 2 l (Th dirctions of th dgs ar not shown, sinc ach may b in ithr i dirction) Lt = Min i l ( i ) If i is forward, i v v thn f( i ) f( i ) + If i is backward, i v (7) Go to tp (2) i i, i i vi, thn f( i ) f( i ) l טענה f לאחר עדכון f בשלב 6 באלגוריתם, היא עדיין פונקצית זרימה הוכחה נביט בכל המצבים האפשריים של עדכון הקשתות, ונראה כי תנאי פונקצית הזרימה מתקיימים, 2 הוגדלו שניהם ב- בשלב 6 לפני העדכון, התקיים = 2 ולכן גם אחרי העדכון הזרימה הנכנסת שווה לזרימה היוצאת, 2 2 מתקיים כי הזרימה הנכנסת שווה לזרימה + היוצאת, 2 2 מתקיים כי הזרימה הנכנסת שווה לזרימה היוצאת, +2 2 מתקיים כי הזרימה הנכנסת שווה לזרימה היוצאת 2 2 2 2 טענה בהנחה שהאלגוריתם עוצר, אזי במעבר האחרון על הצמתים איננו מגיעים אל צומת t קבוצת הצמתים בהן ביקרנו במעבר האחרון תסומן ב- מתקיים: f ( ) = c( ) אזי היא קשת רוויה - x אם קשת y f ( ) = 0 שייכת ל- ) ( : ( : ) שייכת ל- x אם קשת y הערות אזי מתקיים כי עמוד 6

מתעוררת השאלה - האם האלגוריתם מסתיים? נשים לב לתכונה של האלגוריתם - אם פונקצית הזרימה ההתחלתית נותנת ערכים שלמים בלבד, וגם הקיבולים הינם ערכים שלמים, הרי שגם פונקצית הזרימה הסופית תיתן ערכים שלמים בלבד מכיוון שכל מסלול שיפור יגדיל את הזרימה לפחות ב-, ומכיוון שהקיבול של כל צומת הוא סופי, אזי קיים מספר סופי של מסלולים אפשריים, ולכן אם אנו מתעסקים בקיבולים שלמים בלבד, האלגוריתם יסתיים בסופו של דבר אותה טענה נכונה גם לגבי מספרים רציונליים, מכיוון שעוצמתם זהה לזו של השלמים אם זאת, האלגוריתם לא תמיד מסתיים מפתחי האלגוריתם הראו דוגמא לרשת בה האלגוריתם ייכשל, וזאת כאשר אנו מרשים קיבולים אי רציונליים בדוגמא שהראו, לא רק שהאלגוריתם לא יסתיים, אלא הוא גם לא ימצא זרימה מקסימום, והערך של הזרימה אליה ישאף האלגוריתם יהיה כרבע מזרימת המקסימום גם כאשר אנו עוסקים במספרים שלמים, עבורם כבר טענו כי האלגוריתם סופי, האלגוריתם סובל מחוסר דטרמיניסטיות חזק ניתן לבנות בקלות רשת עבורה מספר הצעדים שהאלגוריתם יכול לבצע עד למציאת המקסימום יהיה גדול במספר סדרי גודל ממספר הצעדים הדרוש למציאת זרימת המקסימום, וזאת על ידי בחירה גרועה במיוחד של המסלול אותו נשפר כל פעם את בעיה זו פתרו Edmonds ו- Karp הם הוכיחו כי בעזרת שימוש ב- BF כאשר אנו סורקים את הרשת בשלב הסימון, ובחירה בכל פעם של מסלול השיפור הקצר 3 ביותר, האלגוריתם יכול להסתיים בזמן של, O V E ללא קשר לקיבולים ( ) הנתונים Dinic הציע אלגוריתם משופר לאלגוריתם זה, שסיבוכיות הזמן שלו הינה 2 O V E ( ) מסקנה על ידי בחירת אסטרטגית סימון נכונה, מובטח כי האלגוריתם של Ford ו- Fulkrson יסתיים עמוד 7

האלגוריתם של Dinic בדומה לאלגוריתמים שראינו קודם, האלגוריתם של Dinic מתחיל עם זרימה חוקית כלשהי f ומשפר אותה האלגוריתם עוצר כאשר אין שיפור אפשרי, ואז מתקיים כי הזרימה היא מקסימום רשת השכבות רשת השכבות של גרף (E )G V, עם זרימה f תוגדר על ידי האלגוריתם הבא: 0 { } () V s, i 0 { j i } (2) Construct T v v V for j i and thr is a usful dg from a vrtx of V to v (3) If T is mpty, th prsnt total flow F is maximum, halt {} (4) If T contains t thn l i+, V t and halt (5) Lt V T, incrmnt i and rturn to stp (2) i+ l V i V i בשם שכבות נכנה את אוסף כל ה- Vi אל E i להיות קבוצת הקשתות המועילות מצומת ב- i נגדיר את עבור כל l צומת ב- סיבוכיות האלגוריתם: בזמן בניית רשת השכבות אנו מבקרים בכל קשת בגרף לכל היותר פעמיים - פעם אחת בכל כיוון, ולכן סיבוכיות אלגוריתם זה הינה O( E) למה 3 אם בניית רשת השכבות עוצרת בשלב (3), אזי הזרימה הכללית הנוכחית, F, היא מקסימום רשת התיקונים רשת התיקונים של גרף (E )G V, עם זרימה f וקיבול c תוגדר בצורה הבאה: עבור כל קשת הנמצאת ב -, E מוסיפים בגרף התיקונים שתי קשתות, קשת, c( קדימה וקשת אחורה הקיבול של הקשת שתכוון קדימה יהיה ( = )c ( f ( ) )c 2 הקשתות הנ"ל יהיו ואילו הקיבול של הקשת המכוונת אחוריה יהיה ( = f ( ) בפועל בגרף התיקונים רק אם הן מועילות לפיכך, בגרף התיקונים יהיה לכל היותר 2 קשתות למה נרצה להוסיף קשתות בשני הכיוונים? מכיוון שייתכן למשל E שבקשת קדימה, אם נקטין את הזרימה, עדיין נגדיל את הזרימה הכוללת, ולכן הקטנת הזרימה (כלומר שימוש בקשת אחורה) תהיה חלק ממסלול שיפור עמוד 8

האלגוריתם של Dinic ( (, ),,, ) : N G V E s t c בהינתן פונקציית זרימה f ורשת היא מקסימום: f כל עוד לא נקבע כי הזרימה N ( G ( V, E ), s, t, c בנה את רשת התיקונים ) 2 (, (,, ), בנה את רשת השכבות (BF) על N, על מנת לקבל ) 3 (בין שתי שכבות מקשרות הקשתות המועילות בלבד) מצא זרימה מקסימלית ב- N (לא בהכרח מקסימום) 4 בהתאם לזרימה שנמצאה f שפר את 5 N G V E s t c שורה - 2 רשת התיקונים על כל קשת בגרף המקורי, לפי הזרימה, מוסיפים קשת קדימה וקשת אחורה בכיוון בו נשתמש שורה - 3 בניית רשת השכבות V0 V Vi V i + V l s t E i שהן קשתות מועילות (של רשת Vi מופיעה קבוצת הקשתות, V i + בין השכבות V כאשר אנו מגיעים לשכבה בה i + V i ומגיעות ל- התיקונים) שמתחילות בצומת מ- מתגלה t, נעצור ונמחק את כל הקשתות שאינן נכנסות אל t כל המסלולים מ- לs -t הם בדיוק באורך L קשתות אם הגענו ל- t, נעצור ונאמר כי מצאנו מסלול שיפור אם אנו מגיעים לשכבה ריקה, מצאנו זרימה מקסימום כל שכבה נבנה מהשיכבה הקודמת + קשתות מועילות שהולכות לצמתים חדשים c ( ) כל אחת מהקשתות מקבלת את הקיבול מרשת התיקונים - יש לשים לב שלא כל צומת ברשת התיקונים תופיע ברשת השכבות כמו כן, לא כל הקשתות ברשת השכבות יופיעו ברשת התיקונים שורה - 4 זרימה מקסימלית ב- N הזרימה f תקיים עבור כל קשת ברשת השכבות: 0 f ( ) c ( הזרימה חוקית בקשת ) 2 מאוזנת בכל צומת שאינו s ואינו t 3 הזרימה תהיה זרימה מקסימלית ברשת השכבות עמוד 9

זרימה מקסימלית: לא קיים אף מסלול מכוון קדימה מ- s אל t, כך שכל הקשתות בו עדיין מועילות ברשת השכבות, כלומר: על כל מסלול מכוון באורך L מ- s אל t קיימת לפחות קשת רוויה אחת נשים לב שזרימה מקסימלית איננה בהכרח זרימה מקסימום לדוגמא, נביט בגרף השכבות הבא: V0 V V 2 V 3 s a c b d t אם נניח שהקיבול של כל קשת הוא, ונצעד במסלול מ- s אל t, דרך a ו- d, נקבל זרימה שהיא מקסימלית, אולם היא איננה מקסימום עבור כל קשת אם : cɶ ( ) נגדיר את E j הנמצאת ב- u, נגדיר וגם v cɶ ( ) = c( ) f ( ) u V v V, j j אם 2 u V v V, j j וגם cɶ, נגדיר ) ( ) = f ( u v l k נכנה את שורות 2-5 באלגוריתם בשם פאזה (phas) אורך רשת השכבות הוא האינדקס של השכבה האחרונה ברשת השכבות נסמן ב- את האורך של רשת השכבות בפאזה ה- k -ית למה 4 l > k+ lk אם הפאזה ה- k+ איננה הפאזה האחרונה, אז מתקיים כי עמוד 0

זרימה ברשתות עם חסמים עליונים ותחתונים עד כה הנחנו כי הזרימה בקשתות מוגבלת על ידי ערך חיובי כלשהו כגבול עליון, ו- 0 כגבול תחתון החשיבות שהייתה להנחה זו, היא שיכלונו להניח כי השמת = 0 ) f ( עבור כל קשת נותנת לנו זרימה חוקית, ומכאן יכולנו להמשיך באלגוריתמים לשיפור הזרימה ללא כל קושי כעת נבטל את הנחה זו, ונניח כי הזרימה חסומה גם מלמטה, על ידי ( )b 0 E f : צריכה לקיים את התנאים הבאים: פונקצית זרימה R, נדרוש כי חוק הקשת: עבור כל קשת E 2 חוק הצומת: לכל צומת v שאיננו s או t, מתקיים כי f α ( v) β ( v) b( ) f ( ) c( ) f ( ) = ( ) הדרישה השניה שהייתה נכונה לגבי ה הקודמת שנתנו לפונקצית זרימה נשארה בלא שינוי u, נאמר ש- קשת מועילה אם מתקיים אחד מהשניים: בהינתן קשת v f ( x) < c( ) היא קשת קדימה וגם f ( ) > b( ) היא קשת אחורה וגם 2 טענה למה, האומרת כי עבור כל ועבור כל f מתקיים, נכונה F = f ( ) f ( ) ( : ) ( : ) גם כאשר אנו מדברים על רשתות עם חסמים עליונים ותחתונים נגדיר מחדש את ערך החתך: ה הגיונית מכיוון ערך החתך הוא חסם עליון על הזרימה בחתך מציאת זרימה מקסימום C= c( ) b( ) ( : ) ( : ) הבעיה של מציאת זרימת מקסימום ברשת עם חסמים עליונים ותחתונים מתחלקת לשני שלבים: בדיקה האם קיימת זרימה חוקית ברשת אם כן, מציאת זרימה כזו 2 הגדלת הזרימה החוקית שנמצאה על מנת למצוא זרימת מקסימום עמוד

מציאת זרימה חוקית נציג כעת שיטה לבדיקה האם לרשת נתונה יש פונקצית זרימה חוקית אם כן, אנו N( G( V, E), s, t, גם מוצאים פונקצית זרימה כזו הרשת המקורית היא (c נגדיר רשת חדשה c) N( G( V, E), s, t, בצורה הבאה: {t V = { s, כאשר s, t הם צמתים חדשים, שיכונו מקור עזר ובור עזר V τ v עם חסם עליון לזרימה (קיבול) - 2 עבור כל v V ניצור קשת t G בגרף v זוהי קבוצת הקשתות היוצאות מ- β ( v) כאשר, c ( τ ) b( ) = β ( v) 3 החסם התחתון לזרימה יהיה אפס σ s עם חסם עליון לזרימה (קיבול) - עבור כל v V ניצור קשת v G בגרף v היא קבוצת הקשתות הנכנסות ל- α( v) כאשר, c ( τ ) b( ) = α ( v) 4 5 קבוצת הקשתות E נשארת בגרף החדש, אולם החסמים העליונים והתחתונים על הקיבול משתנים החסמים הנמוכים של כל הקשתות נקבעים c ( ) = c( ) b( ) מוגדר כך: ל- 0, והחסם העליון של כל קשת E,t s עם חסמים עליונים t צור קשתות חדשות: s = ) c( ) =, c( ועם חסמים תחתונים 0 אנו מקבלים היא רשת שלה מקור s ובור t המקור והבור של הרשת המקורית -,s, הינם צמתים רגילים בגרף החדש, המקיימים את חוק הצומת וחוק הקשת t טענה לרשת המקורית יש זרימה חוקית אם ורק אם מתקיים כי בפונקצית זרימת המקסימום של הרשת N G( V, E), s, t, c כל הקשתות היוצאות מ- s רוויות מציאת זרימת מקסימום ( ) על מנת למצוא זרימת מקסימום, נשפר את הזרימה החוקית שהצלחנו למצוא ברשת נוכל להשתמש, למשל, באלגוריתם Ford-Fulkrson עם שינוי קל: נצטרך להגדיר מחדש את המושג קשת מועילה במקרה של קשת אחורה: u תיקרא מועילה אם: קשת אחורה v u מסומן ו- v איננו מסומן f ( ) > b( ) 2 עמוד 2

מציאת זרימת מינימום על מנת למצוא זרימת מינימום ברשת עם חסמים תחתונים ועליונים, נהפוך את המקור לבור ואת הבור למקום, ונמצא זרימת מקסימום מתקיים כי אם הזרימה מ- t ל- s היא מקסימום, אזי הזרימה מ- s אל t היא מינימום אופן מציאת זרימת מינימום נהפוך את תפקידי המקור והבור, כלומר s יהיה בתפקיד הבור ו- t יהיה בתפקיד המקור אם נסמן ב- f את פונקצית הזרימה ברשת המקורית וב- ' f את אותה פונקצית הזרימה ברשת בה התפקידים הפוכים, אזי יתקיים (כאשר (v) N + מציין את קבוצת הקשתות אשר נכנסות ל- v ו- (v) N מציין את קבוצת הקשתות אשר יוצאות מ- v ): f = f ( ) f ( ) f ( ) f ( ) = = f ' + + N ( t) N ( t) N ( t) N ( t) f ' f ולכן זרימת מינימום ברשת המקורית אם ורק אם עם התפקידים ההפוכים זרימת מקסימום ברשת עמוד 3

A B יישומים של זרימה ברשתות בעיית השידוך נתון גרף לא מכוון בו שתי קבוצות צמתים - B,A וכן קבוצת קשתות E הקשתות מחברות בין איברים ב- A לאיברים ב- B בין איברים ב- A לבין עצמם אין קשתות, ובין איברים ב- B לבין עצמם אין קשתות גרף במבנה זה נקרא גרף זוגי (bipartit) קבוצת קשתות M של גרף חסר מעגלים משוייכת לכל היותר לקשת אחת בקבוצה M G( V, E) נקראת שידוך אם כל צומת בעיית השידוך המטרה: למצוא מספר מירבי של שידוכים (קשתות), כך שאין שתי קשתות שיש להן צומת משותף ( (, ), s, t, נבנה רשת (c N G V E {, } V = s t V 2 על מנת לפתור את בעייה זו: E { s a a A} { b t b B} = a b a b in G אנו מכוונים את כל הקשתות מימין לשמאל מ- s יש קשת לכל אחד מאיבר A אל t נכנסת קשת מכל איבר ב- B כל הקיבולים בקשתות היוצאות מ- s ובקשתות הנכנסות אל t הם לשאר הקשתות, אלו שבין A ל- B, ניתן קיבול לאחר שנבנה את הרשת, נפתור את בעיית זרימת מקסימום ברשת הזרימה N כל החסמים התחתונים הינם 0 במקרה זה נמצא זרימת מקסימום, ונסמן ב- F את ערך זרימת המקסימום הכללית משפט מספר הקשתות בשידוך המקסימלי של גרף זוגי, שווה לערך זרימת המקסימום, ברשת המתאימה G), N( כלומר F = M A שידוך מלא אם כל צמתי נקרא ב- G M גרף זוגי שידוך )G,A,B יהי (E משודכים עמוד 4

משפט Hall x נסמן ב- (x )Γ את כל השכנים ב- B של A גרף זוגי ותהי קבוצה )G,A,B יהי (E צמתים ב- x משפט Hall אומר: ב- G יש שידוך מלא אם ורק אם מתקיים תנאי :Hall Γ ( x) > x מתקיים כי, x עבור כל A A B הוכחת המשפט s x Γ( x) t A/ x B / Γ( x) הכרחיות המשפט טריוויאלית - אם אין מספיק צמתים ב- B, הגרף לא יכול להיות מלא נותר להוכיח רק את מספיקות התנאי של Hall הוכחה בדרך השלילה: נניח כי אין שידוך מלא, וכן מתקיים תנאי Hall השידוך אינו מלא - כלומר הזרימה תהיה פחות ממספר הקשתות הנכנסות ל- A, ומכאן יש צמתים ב- A שאין להם בן זוג ב- B נסתכל על חתך מסוים - חלק מהצמתים ב- A וחלק מהצמתים ב- B נמצאים בו /A ) הן כולם רוויות נסתכל על הקשתות (x כל הצמתים המסומנים ב- B, סומנו על ידי כך שהגענו אליהם בעזרת קשת מ- A ל- B מכאן קבוצה זו היא (x )Γ /A יש זרימה 0 אין קשתות מ- x) A B / Γ( כמו כן, בכל הקשתות X B נשתמש במשפט האומר שמספר הקשתות בשידוך המקסימלי של גרף זוגי, שווה לערך זרימת המקסימום נסתכל על החתך : A > M = F = A/ x + Γ( x) ( : ) A/ x = A x A > A x + Γ( x) x > Γ( x) קיבלנו סתירה לתנאי,Hall ומכאן שאם אין שידוך מלא - תנאי Hall מופר עמוד 5

גרף PERT (נלקח מחוברת התרגולים של הקורס "אלגוריתמים בתורת הגרפים" בטכניון) שימוש בדרך כלל, אנו משתמשים בגרפים מסוג PERT במשמעות הבאה: כל קשת מייצגת משימה, ונאמר כי ניתן להתחיל לבצע את המשימה u,v) ( אם ורק אם הסתיים ביצוע של כל המשימות שמתאימות לקשתות אשר נכנסות ל- u את המשימות יש לשבץ על מכונות אשר כל אחת מסוגלת בכל רגע נתון לבצע משימה בודדת נאמר כי ניתן לבצע משימה אם ורק אם ניתן להתחיל לבצע אותה וגם קיימת מכונה פנויה (אם לא קיימת מכונה פנויה המשימה תתעכב עד אשר תתפנה מכונה) דוגמא לבעיה לכל משימה ישנו משך זמן הדרוש לביצועה זמנים אלו אינם נתונים בקלט המטרה: למצוא את מספר המינימום של מכונות כך שלכל בחירה של משכי זמן לכל המשימות, אף משימה לא תתעכב גרף מכוון וסופי (E )G V, יקרא גרף PERT אם הוא מקיים את התנאים הבאים: G הוא חסר מעגלים מכוונים 2 קיימים שני צמתים שונים s ו- t, להם נקרא צומת ההתחלה וצומת הסיום, המקיימים שכל צומת נמצא על מסלול מ- לs -t הפתרון: נבנה את רשת הזרימה הבאה עם חסמים עליונים ותחתונים G יהיה הגרף המכוון של הרשת, הצומת s יהיה המקור והצומת t יהיה הבור לכל קשת ניתן חסם עליון של וחסם תחתון של נמצא ברשת זו זרימת מינימום: * f f מ- לs -t ניתן לראות כי קיימת זרימת מינימום חוקית ברשת זו, וכי > 0 * * בנוסף משום שכל החסמים התחתונים הם שלמים, נקבל כי f שלמה נניח גם, * f שלם, לכל קשת נפרק כעת את f למסלולים (לא בלי הגבלת הכלליות, כי ( ( * בהכרח זרים) אנו נמצא את הפירוק למסלולים באופן הבא: כל עוד הזרימה שנותרה אינה 0, בצע "סרוק" מ- s על-פני קשתות אשר הזרימה שנותרה עליהן גדולה ממש מ- 0 סרוק זה יסתיים ב- t, צרף את המסלול אשר הסרוק מצא לאוסף המסלולים A הפחת מהזרימה שנותרה עבור כל הקשתות מהמסלול שנמצא באיטרציה הנוכחית * יש להתחיל באיטרציה הראשונה עם הזרימה f עמוד 6

* s, f ( ולכן v) f, בהכרח קיימת קשת s,v) ( כך שמתקיים: > 0 היות ש- > 0 * * משום ש- f שלמה, התהליך אשר תארנו למעלה יוכל להתחיל כל עוד הזרימה שנותרה אינה 0, מאותם שיקולים בדיוק התהליך לא יכשל תהליך זה יפסיק, משום שבכל איטרציה, אנו מורידים את ערך הזרימה שנותרה ב- בדיוק מסקנה ( u,v) p A לכל קשת u,v) ( קיים מסלול, כך ש- נמצאת ב- p מסקנה 2 אם נקצה מכונה לכל מסלול ב- A, אזי המסלולים מגדירים שיבוץ חוקי שבו אף משימה אינה ממתינה לכל בחירה של משכי זמן * נשים לב כי f A = לכן הראנו כי אנו זקוקים ל- f מכונות לכל הפחות * עמוד 7